// Header Protection
#ifndef _SCENE_H_
#define _SCENE_H_

// Include Files
#include "Event\Event.h"
#include "Event\EventArg.h"

// Namespace
namespace IE
{
	/////////////////////////////////////////////////////////////////////////////////
	//// Forward Declarations
	//
	//class CGame;
	//
	//class CMeshManager;
	//class CShaderManager;
	//class CTextureManager;
	//
	//class CRenderState;
	//class CScriptState;

	/////////////////////////////////////////////////////////////////////////////////
	// This class contains all game objects and performs scene management.
	class CScene
	{
	public:     // methods
		CScene();
		~CScene();

		// Initialize the scene.
		void Initialize();

		// Shutdown the scene.
		void Shutdown();

		//void LoadMesh( string_t _strFilename );
		//void LoadShader( string_t _strFilename );
		//void LoadTexture( string_t _strFilename );

		//void AddScriptState( CScriptState *_pScriptState );
		//void RemoveScriptState( CScriptState *_pScriptState );

		//void AddRenderState( CRenderState *_pRenderState );
		//void RemoveRenderState( CRenderState *_pRenderState );

		//public:     // events
		//
		//	CEvent<CEventArg> Load;
		//	CEvent<CEventArg> Update;
		//	CEvent<CEventArg> Destroy;

		//private:    // data
		//
		//	CSingleton<CGame> m_pGame;
		//
		//	CSingleton<CMeshManager>    m_pMeshManager;
		//	CSingleton<CShaderManager>  m_pShaderManager;
		//	CSingleton<CTextureManager> m_pTextureManager;

	private:    // dummy definitions
		CScene( CScene const & );
		CScene &operator =( CScene const & );
	};
}

// Header Protection
#endif // _SCENE_H_
